<template>
  <div class="pest-measures">
    <h3 class="title-header">
      今日虫情防治措施
    </h3>
    
    <div class="daily-measures">
      <!-- 显示选中日期的防治措施 -->
      <div v-if="localSelectedDay !== null && selectedDayMeasures.length > 0" class="selected-day-info">
        <div class="selected-date">
          <span class="date-label">{{ formatSelectedDay }}</span>
          <span class="lunar-date" v-if="localSelectedDay && localSelectedDay.lunarDate">{{ localSelectedDay.lunarDate }}</span>
        </div>
        
        <div v-for="(measure, index) in selectedDayMeasures" :key="index" class="event-card" :class="measure.cardClass">
          <div class="event-header">
            <span class="event-type" :class="measure.type">{{ getEventTypeName(measure.type) }}</span>
            <span class="event-title">{{ measure.title }}</span>
          </div>
          <div class="event-body">
            <p class="event-desc" v-if="isHTMLContent(measure.description)" v-html="measure.description"></p>
            <p class="event-desc" v-else v-html="formatDescription(measure.description, measure.type, getDate(measure.date), getMonth(measure.date))"></p>
          </div>
        </div>
      </div>
      
      <!-- 显示选中日期但无防治措施的情况 -->
      <div v-else-if="localSelectedDay !== null && selectedDayMeasures.length === 0" class="no-date-measures">
        <div class="selected-date">
          <span class="date-label">{{ formatSelectedDay }}</span>
          <span class="lunar-date" v-if="localSelectedDay && localSelectedDay.lunarDate">{{ localSelectedDay.lunarDate }}</span>
        </div>
        
        <div class="no-events">
          <p>该日暂无虫情防治措施</p>
        </div>
      </div>
      
      <!-- 显示今日防治措施 -->
      <div v-else class="today-measures">
        <div class="selected-date">
          <span class="date-label">{{ formatToday }}</span>
          <span class="lunar-date">{{ todayLunarDate }}</span>
        </div>
        
        <div v-if="todayMeasures.length > 0">
          <div v-for="(measure, index) in todayMeasures" :key="index" class="event-card" :class="measure.cardClass">
            <div class="event-header">
              <span class="event-type" :class="measure.type">{{ getEventTypeName(measure.type) }}</span>
              <span class="event-title">{{ measure.title }}</span>
            </div>
            <div class="event-body">
              <p class="event-desc" v-if="isHTMLContent(measure.description)" v-html="measure.description"></p>
              <p class="event-desc" v-else v-html="formatDescription(measure.description, measure.type, getDate(measure.date), getMonth(measure.date))"></p>
            </div>
          </div>
        </div>
        
        <div v-else class="no-events">
          <p>今日暂无虫情防治措施</p>
        </div>
      </div>
    </div>
  </div>
</template>

<script setup>
import { ref, computed, watch, onMounted, defineExpose } from 'vue';

const props = defineProps({
  selectedDay: {
    type: Object,
    default: null
  },
  currentYear: {
    type: Number,
    default: () => new Date().getFullYear()
  },
  currentMonth: {
    type: Number,
    default: () => new Date().getMonth() + 1
  }
});

const emit = defineEmits(['update:selectedDay', 'update:eventDates']);

// 本地状态管理选中日期
const localSelectedDay = ref(null);

// 监听父组件传入的selectedDay变化
watch(() => props.selectedDay, (newVal) => {
  if (newVal && newVal.date) {
    localSelectedDay.value = newVal;
    updateMeasures(newVal);
  }
}, { immediate: true });

// 判断内容是否为HTML格式
function isHTMLContent(text) {
  return text && text.includes('<div class="structured-content">');
}

// 将普通文本格式化为结构化内容，进一步减少字数并分段展示
function formatDescription(text, type, day, month) {
  // 如果已有内容直接返回
  if (text && text.includes('<div class="structured-content">')) {
    return text;
  }
  
  // 获取不同类型对应的颜色
  let typeColor;
  switch (type) {
    case 'prevention':
      typeColor = '#4CAF50'; // 绿色
      break;
    case 'outbreak':
      typeColor = '#2196F3'; // 蓝色
      break;
    case 'critical':
      typeColor = '#FF9800'; // 橙色
      break;
    default:
      typeColor = '#333';
  }
  
  // 根据类型和日期设置分段内容
  let htmlContent = '';
  
  if (type === 'prevention') {
    // 为预防期根据不同日期提供不同内容
    const preventionTemplates = [
      // 模板1
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>茶树新梢和嫩叶部位需重点加强防护措施，定期检查虫卵和早期病害症状。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>及时清除茶园杂草和受感染病叶，保持整体茶园环境通风良好。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>根据专业观察结果适时喷洒有效预防性药剂，显著降低病虫害爆发风险。</p>
      `,
      // 模板2
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>今日工作重点关注茶园边界区域病虫害传播情况，适当加强巡查频次。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>全面检查茶园排水系统运行状况，保持土壤湿度适宜，减少病原菌繁殖机会。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>对茶园内弱势茶株进行特殊保护管理，适当增施有机肥提高植株整体抵抗力。</p>
      `,
      // 模板3
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>开展茶树长势与整体抵抗力评估工作：重点检查叶片颜色和硬度变化情况。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>建立完善的重点区域虫情记录档案系统，科学分析虫害传播规律特点。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>适时对茶园预防性喷施高效生物制剂，创造有益生物多样性栖息环境。</p>
      `,
      // 模板4
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>监测显示周边茶园已出现明显虫害迹象，需做好全面防范措施预防传入。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>对茶园内通风透光条件不良的茶株进行适当修剪，改善微环境生长条件。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>在关键区域设置足够数量的黄板和专业诱捕器，监测虫口密度变化趋势。</p>
      `,
      // 模板5
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>开展茶树根部健康系统检查工作：重点观察新根生长状况和土壤环境变化。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>科学规划实施茶园防虫隔离带建设，有效减少虫害跨区域传播风险因素。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>根据本月虫情特点筛选最适合的预防性药剂种类，提前准备应急防治物资。</p>
      `
    ];
    
    // 根据日期选择模板
    const templateIndex = (day + month) % preventionTemplates.length;
    htmlContent = preventionTemplates[templateIndex];
    
  } else if (type === 'outbreak') {
    // 为高发期根据不同日期提供不同内容
    const outbreakTemplates = [
      // 模板1
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>监测发现茶小绿叶蝉、红蜘蛛等害虫数量明显增加，部分茶株叶片已出现受损症状。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>立即组织专业技术人员开展全园范围普查工作，根据虫情密度选择适当药剂防治。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>防治过程中注意交替使用不同作用机理药剂，防治完成后认真检查防控效果。</p>
      `,
      // 模板2
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>茶园叶螨危害程度持续加剧，大量叶片已呈现失绿、卷曲现象，影响光合作用效率。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>根据当前情况立即启动区域应急防治预案，科学划分防治区域优先处理次序。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>选用高效选择性专业药剂开展防治工作，尽量减少对天敌和授粉昆虫的不良影响。</p>
      `,
      // 模板3
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>本区域茶尺蠖发生密度已达到专业防治指标要求，大量叶片出现明显缺刻症状。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>建议立即实施生物防治与化学防治相结合的综合策略，全面提高整体防治效率。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>在关键区域建立专项监测点系统，持续追踪虫害种群变化情况和防治效果评估。</p>
      `,
      // 模板4
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>茶园内炭疽病、轮斑病等多种真菌性病害蔓延趋势十分明显，需立即采取措施。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>组织专人及时剪除全部病叶和受感染病枝，集中处理避免引起二次传播风险。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>密切关注天气变化，在合适气象条件下全面喷施高效保护性杀菌剂进行防治。</p>
      `,
      // 模板5
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>监测显示茶园蚜虫族群已进入爆发期，分泌物已引发明显煤污病症状，影响茶叶品质。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>全面调整优化茶园栽培管理技术措施，重点改良土壤通气性和排水系统性能。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>科学协调安排各区域防治最佳时间窗口，最大化提升药效同时有效控制农药残留。</p>
      `
    ];
    
    // 根据日期选择模板
    const templateIndex = (day + month) % outbreakTemplates.length;
    htmlContent = outbreakTemplates[templateIndex];
    
  } else if (type === 'critical') {
    // 为关键期根据不同日期提供不同内容
    const criticalTemplates = [
      // 模板1
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>当前阶段防控措施质量将直接影响整体茶叶产量和品质，茶园虫害扩散风险极高。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>必须采用生物防治与化学防治相结合的综合策略，同时加强茶树营养管理工作。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>严格控制使用农药种类、用量和施用频次，全方位确保茶叶生产安全标准。</p>
      `,
      // 模板2
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>监测表明虫源扩散速度明显加快，重要防控时机稍纵即逝，需立即采取行动。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>建议各茶园实施区域联防联控机制，统一制定科学防治计划和执行标准规范。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>专业技术人员加强药剂调配比例精准管控，有效避免有害生物抗性发展趋势。</p>
      `,
      // 模板3
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>持续连续阴雨天气条件显著增加各类病害发生风险，多种真菌性病害发展迅速。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>必须加大专业技术指导力度和频率，科学评估病情发展和优化用药方案选择。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>建议整合调动多方专业资源和设备，共同开展大规模区域统防统治防控工作。</p>
      `,
      // 模板4
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>茶园内多种有害生物交替频繁发生，整体防治难度大幅增加，关键期管理至关重要。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>根据虫情评估结果科学制定害虫优先防治顺序，合理安排各区域防治时间窗口。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>特别重视农艺耕作措施改进与茶园生物多样性营造工作，增强生态系统平衡能力。</p>
      `,
      // 模板5
      `
        <p><span class="point-number" style="color:${typeColor}">1. </span>茶园病虫交织危害程度已达到季节性峰值水平，潜在产量损失风险系数极高。</p>
        <p><span class="point-number" style="color:${typeColor}">2. </span>必须严格控制各类农药安全间隔使用期限规定，确保采摘茶叶无有害残留。</p>
        <p><span class="point-number" style="color:${typeColor}">3. </span>建立完善的防治过程数据记录档案系统，为后期科学防控工作提供重要参考依据。</p>
      `
    ];
    
    // 根据日期选择模板
    const templateIndex = (day + month) % criticalTemplates.length;
    htmlContent = criticalTemplates[templateIndex];
  }
  
  // 如果有原始文本且不是自定义的HTML，则使用原文本
  if (text && !text.includes('<div class="structured-content">')) {
    return `<div class="structured-content">
      <div class="content-section">
        <p class="simple-description">${text}</p>
      </div>
    </div>`;
  }
  
  // 否则使用新格式化的内容
  return `<div class="structured-content">
    <div class="content-section">
      <div class="key-points">
        ${htmlContent}
      </div>
    </div>
  </div>`;
}

// 格式化选中日期的显示
const formatSelectedDay = computed(() => {
  if (!localSelectedDay.value || !localSelectedDay.value.date) return '';
  
  const date = new Date(localSelectedDay.value.date);
  return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日`;
});

// 获取今日日期格式化
const formatToday = computed(() => {
  const today = new Date();
  return `${today.getFullYear()}年${today.getMonth() + 1}月${today.getDate()}日`;
});

// 获取今日农历日期
const todayLunarDate = computed(() => {
  // 简化处理，实际应该使用专门的农历计算库
  const lunarDays = ['初一', '初二', '初三', '初四', '初五', '初六', '初七', '初八', '初九', '初十',
    '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十',
    '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '三十'];
  
  const today = new Date();
  const day = (today.getDate() + today.getMonth() * 2) % 30;
  return lunarDays[day];
});

// 获取事件类型名称
function getEventTypeName(type) {
  switch (type) {
    case 'prevention': return '预防期';
    case 'outbreak': return '高发期';
    case 'critical': return '关键期';
    default: return '常规';
  }
}

// 存储选中日期的防治措施
const selectedDayMeasures = ref([]);

// 存储今日防治措施
const todayMeasures = ref([]);

// 初始化
onMounted(() => {
  // 初始化今日防治措施
  const today = new Date();
  const todayEvents = getEvents(today);
  todayMeasures.value = todayEvents;

  // 如果没有选中日期，显示今日
  if (!localSelectedDay.value) {
    const todayObj = {
      date: today,
      lunarDate: todayLunarDate.value
    };
    localSelectedDay.value = todayObj;
    selectedDayMeasures.value = todayEvents;
  }

  // 向父组件发送有事件的日期列表
  const eventDates = getAllEventDates();
  emit('update:eventDates', eventDates);
});

// 修改getEvents函数，优化文本长度和排版
function getEvents(date) {
  if (!date) return [];

  // 确保传入的日期是Date对象
  const targetDate = new Date(date);
  const targetYear = targetDate.getFullYear();
  const targetMonth = targetDate.getMonth();
  const targetDay = targetDate.getDate();

  const events = [];
  
  // 2025年全年的固定事件
  if (targetYear === 2025) {
    // 4月份只有1日和5日的固定事件，其他月份有1日、3日、5日
    if (targetDay === 1) {
      // 生成根据月份不同的月初普查内容
      const monthlyContent = [
        "全面记录茶树当前生长状况和虫口密度分布情况，完善预警档案系统。",
        "茶园边缘区域已发现少量虫源，需立即加强重点监测。",
        "各管理区域安排专人负责巡查工作，确保信息及时共享。"
      ];
      
      // 根据月份生成不同的第三点内容
      if (targetMonth <= 2) { // 1-3月(冬春季)
        monthlyContent[2] = "重点防范早春季节常见病虫害发生，密切关注气温回升后的虫情明显变化。";
      } else if (targetMonth >= 3 && targetMonth <= 5) { // 4-6月(春夏季)
        monthlyContent[2] = "加强茶树一芽一叶期关键生长阶段保护措施，全面确保春茶品质和产量。";
      } else if (targetMonth >= 6 && targetMonth <= 8) { // 7-9月(夏秋季)
        monthlyContent[2] = "特别注意高温多湿环境条件下的各类病害防控工作，有效保障夏秋茶生产安全。";
      } else { // 10-12月(秋冬季)
        monthlyContent[2] = "及时做好越冬前虫害清理防控工作，有效降低来年春季虫源基数。";
      }
      
      // 设置预防期的颜色
      const preventionColor = '#4CAF50';
      
      const htmlDesc = `
      <div class="structured-content">
        <div class="content-section">
          <div class="key-points">
            <p><span class="point-number" style="color:${preventionColor}">1. </span>${monthlyContent[0]}</p>
            <p><span class="point-number" style="color:${preventionColor}">2. </span>${monthlyContent[1]}</p>
            <p><span class="point-number" style="color:${preventionColor}">3. </span>${monthlyContent[2]}</p>
          </div>
        </div>
      </div>`;
      
      events.push({
        date: new Date(targetYear, targetMonth, targetDay),
        type: 'prevention',
        title: '月初茶园普查',
        description: htmlDesc
      });
    } else if (targetDay === 3 && targetMonth !== 3) { // 除了4月份外的3日事件
      // 根据季节调整茶小绿叶蝉监测内容
      let seasonContent = "";
      
      if (targetMonth <= 2) { // 1-3月(冬春季)
        seasonContent = "早春气温逐渐回升期间，茶小绿叶蝉已进入繁殖活跃期，建议密切关注越冬成虫活动情况。";
      } else if (targetMonth >= 3 && targetMonth <= 5) { // 4-6月(春夏季)
        seasonContent = "春茶生长期虫口基数明显增加，必须注意加强新梢嫩叶保护措施，有效防止产量受到影响。";
      } else if (targetMonth >= 6 && targetMonth <= 8) { // 7-9月(夏秋季)
        seasonContent = "高温高湿季节环境下，各类虫害繁殖速度显著加快，需警惕区域性爆发风险。";
      } else { // 10-12月(秋冬季)
        seasonContent = "秋季虫口有效控制是降低越冬基数的关键措施，直接影响来年春茶品质和产量。";
      }
      
      // 设置高发期的颜色
      const outbreakColor = '#2196F3';
      
      const htmlDesc = `
      <div class="structured-content">
        <div class="content-section">
          <div class="key-points">
            <p><span class="point-number" style="color:${outbreakColor}">1. </span>仔细检查茶树叶背情况，各区域设置黄色粘虫板进行有效捕捉。</p>
            <p><span class="point-number" style="color:${outbreakColor}">2. </span>监测显示阳光充足地块虫口密度较高，${targetMonth + 1}月虫口平均密度已达${Math.floor(targetMonth * 1.5 + 5)}头/100芽。</p>
            <p><span class="point-number" style="color:${outbreakColor}">3. </span>${seasonContent}</p>
          </div>
        </div>
      </div>`;
      
      events.push({
        date: new Date(targetYear, targetMonth, targetDay),
        type: 'outbreak',
        title: '茶小绿叶蝉监测',
        description: htmlDesc
      });
    } else if (targetDay === 5) {
      // 根据月份创建不同的预防措施
      const preventionByMonth = [
        "低温期间需控制茶园土壤适宜湿度，有效减少各类根部病害发生概率。", // 1月
        "提前做好春梢生长期的各项病虫害预防准备工作，确保防控及时有效。", // 2月
        "春茶采摘前重点加强防控叶螨和小绿叶蝉等主要害虫，保障茶叶品质。", // 3月
        "茶叶一芽一叶生长关键期加强保护措施，严格控制农药使用类型和用量。", // 4月
        "梅雨季节应重点防控各类真菌性病害迅速扩散，保持茶园良好通风环境。", // 5月
        "高温多雨时节需特别关注炭疽病等重要病害防治工作，及时处理病株。", // 6月
        "夏茶采摘后立即进行适当修剪整形，有效降低园区整体虫害基数。", // 7月
        "秋梢生长期重点防控茶尺蠖和卷叶蛾等主要害虫，减少叶片损伤。", // 8月
        "秋季茶园管理工作中需特别关注红蜘蛛防控措施，防止大面积发生。", // 9月
        "秋冬季节交替时期注意防范各类病虫害越冬准备，降低越冬虫口数量。", // 10月
        "进入冬季前组织实施最后一次全园消毒处理工作，清除残留病虫源。", // 11月
        "寒冬季节需加强茶树整体营养管理和供应，全面提高植株抵抗力水平。" // 12月
      ];
      
      // 设置预防期的颜色
      const preventionColor = '#4CAF50';
      
      const htmlDesc = `
      <div class="structured-content">
        <div class="content-section">
          <div class="key-points">
            <p><span class="point-number" style="color:${preventionColor}">1. </span>全面监测茶园边界与叶背情况，各区域合理设置粘虫板进行监控。</p>
            <p><span class="point-number" style="color:${preventionColor}">2. </span>${preventionByMonth[targetMonth]}</p>
            <p><span class="point-number" style="color:${preventionColor}">3. </span>彻底清除茶园杂草减少虫源潜在栖息地，同时注意防治措施与产品安全平衡。</p>
          </div>
        </div>
      </div>`;
      
      events.push({
        date: new Date(targetYear, targetMonth, targetDay),
        type: 'prevention',
        title: '茶小绿叶蝉预防',
        description: htmlDesc
      });
    } else {
      // 其他日期的事件：按月份分布
      const monthlyDays = {
        0: [7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31], // 1月
        1: [2, 4, 8, 10, 12, 14, 18, 20, 22, 24, 26, 28], // 2月
        2: [7, 8, 10, 11, 13, 14, 16, 18, 19, 21, 22, 24, 25, 27, 28, 30, 31], // 3月
        3: [2, 4, 6, 9, 12, 15, 16, 18, 20, 22, 24, 26, 28, 30], // 4月
        4: [1, 3, 5, 8, 10, 12, 14, 17, 20, 22, 23, 25, 27, 29, 31], // 5月
        5: [2, 4, 7, 9, 11, 13, 16, 18, 20, 22, 25, 27, 29], // 6月
        6: [1, 3, 5, 7, 10, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31], // 7月
        7: [2, 4, 6, 8, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30], // 8月
        8: [2, 4, 6, 8, 10, 12, 14, 17, 19, 21, 23, 25, 27, 29], // 9月
        9: [1, 3, 5, 7, 9, 11, 13, 15, 18, 21, 23, 25, 27, 29, 31], // 10月
        10: [2, 4, 6, 8, 10, 12, 15, 18, 20, 22, 24, 26, 28, 30], // 11月
        11: [2, 4, 6, 9, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30] // 12月
      };
      
      // 检查当前日期是否需要显示事件
      if (monthlyDays[targetMonth] && monthlyDays[targetMonth].includes(targetDay)) {
        // 决定类型 - 确保19日为高发期
        let type;
        if (targetDay === 19) {
          type = 'outbreak';
        } else {
          // 基于月份和日期生成事件类型
          const types = ['prevention', 'outbreak', 'critical'];
          const index = Math.floor((targetMonth * 31 + targetDay) % 3);
          type = types[index];
        }
        
        // 根据不同日期生成更多多样化的标题
        let title = '茶园病虫害防治';
        
        // 根据日期生成不同标题
        if (targetDay % 10 === 0) {
          title = '茶园综合管理';
        } else if (targetDay % 7 === 0) {
          title = '病虫害防控巡查';
        } else if (targetDay % 5 === 0) {
          title = '茶树健康评估';
        } else if (targetDay % 3 === 0) {
          title = '生态平衡维护';
        }
        
        // 每月25日标记为特殊茶苗管理日
        if (targetDay === 25) {
          title = '茶苗管理与保护';
        }
        
        // 每月最后一天标记为月度总结日
        const lastDayOfMonth = new Date(targetYear, targetMonth + 1, 0).getDate();
        if (targetDay === lastDayOfMonth) {
          title = '月度虫情总结';
        }
        
        // 添加特殊卡片类标识
        let cardClass = '';
        if (type === 'critical' && title === '生态平衡维护') {
          cardClass = 'critical-ecology-card';
        }
        
        events.push({
          date: new Date(targetYear, targetMonth, targetDay),
          type: type,
          title: title,
          description: '', // formatDescription函数会根据type、day和month生成差异化内容
          cardClass: cardClass // 添加卡片CSS类
        });
      }
    }
  }
  
  // 处理空描述，为其生成基于日期的内容
  events.forEach(event => {
    if (!event.description) {
      event.description = formatDescription('', event.type, targetDay, targetMonth);
    }
  });
  
  return events;
}

// 获取所有有事件的日期
function getAllEventDates() {
  const dates = [];
  
  // 2025年全年的事件日期
  for (let month = 0; month < 12; month++) {
    // 每月固定日期（4月份只有1日和5日）
    dates.push(new Date(2025, month, 1));
    if (month !== 3) { // 4月份不添加3日
      dates.push(new Date(2025, month, 3));
    }
    dates.push(new Date(2025, month, 5));
    
    // 每月的额外日期
    const monthlyDays = {
      0: [7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31], // 1月
      1: [2, 4, 8, 10, 12, 14, 18, 20, 22, 24, 26, 28], // 2月
      2: [7, 8, 10, 11, 13, 14, 16, 18, 19, 21, 22, 24, 25, 27, 28, 30, 31], // 3月
      3: [2, 4, 6, 9, 12, 15, 16, 18, 20, 22, 24, 26, 28, 30], // 4月
      4: [1, 3, 5, 8, 10, 12, 14, 17, 20, 22, 23, 25, 27, 29, 31], // 5月
      5: [2, 4, 7, 9, 11, 13, 16, 18, 20, 22, 25, 27, 29], // 6月
      6: [1, 3, 5, 7, 10, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31], // 7月
      7: [2, 4, 6, 8, 11, 14, 16, 18, 20, 22, 24, 26, 28, 30], // 8月
      8: [2, 4, 6, 8, 10, 12, 14, 17, 19, 21, 23, 25, 27, 29], // 9月
      9: [1, 3, 5, 7, 9, 11, 13, 15, 18, 21, 23, 25, 27, 29, 31], // 10月
      10: [2, 4, 6, 8, 10, 12, 15, 18, 20, 22, 24, 26, 28, 30], // 11月
      11: [2, 4, 6, 9, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30] // 12月
    };
    
    // 添加每月的额外日期
    if (monthlyDays[month]) {
      for (let day of monthlyDays[month]) {
        // 避免重复添加1、3、5日
        if (![1, 3, 5].includes(day)) {
          dates.push(new Date(2025, month, day));
        }
      }
    }
  }
  
  // 确保所有日期对象都设置为0时0分0秒
  return dates.map(date => {
    const newDate = new Date(date);
    newDate.setHours(0, 0, 0, 0);
    return newDate;
  });
}

// 更新防治措施
function updateMeasures(day) {
  if (!day) return;
  
  let date;
  if (day.date instanceof Date) {
    date = day.date;
  } else if (typeof day.date === 'string') {
    date = new Date(day.date);
  } else {
    console.error('Invalid date format:', day.date);
    return;
  }

  // 获取当前选中日期的防治措施
  const events = getEvents(date);
  selectedDayMeasures.value = events;
  
  // 如果选中的是今天，同时更新今日防治措施
  const today = new Date();
  if (today.getFullYear() === date.getFullYear() &&
      today.getMonth() === date.getMonth() &&
      today.getDate() === date.getDate()) {
    todayMeasures.value = events;
  }
}

// 对外暴露更新方法
function updateMeasuresFromCalendar(day) {
  if (!day) return;
  
  let date;
  if (day.date instanceof Date) {
    date = day.date;
  } else if (typeof day.date === 'string') {
    date = new Date(day.date);
  } else {
    console.error('Invalid date format:', day.date);
    return;
  }

  localSelectedDay.value = {
    ...day,
    date: date
  };
  
  const events = getEvents(date);
  selectedDayMeasures.value = events;
  
  // 如果是今天，同时更新今日防治措施
  const today = new Date();
  if (today.getFullYear() === date.getFullYear() &&
      today.getMonth() === date.getMonth() &&
      today.getDate() === date.getDate()) {
    todayMeasures.value = events;
  }
}

defineExpose({
  updateMeasures: updateMeasuresFromCalendar,
  getAllEventDates
});

// 清除选中的日期，返回今日视图
function clearSelectedDay() {
  localSelectedDay.value = null;
  emit('update:selectedDay', null);
}

// 获取日期的天数
function getDate(dateStr) {
  return dateStr.split('-')[2];
}

// 获取日期的月份
function getMonth(dateStr) {
  return dateStr.split('-')[1];
}

// 获取年份
function getYear(dateStr) {
  return dateStr.split('-')[0];
}
</script>

<style scoped>
.pest-measures {
  margin-top: 3px;
  height: 880px;
  background-color: white;
  border-radius: 8px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.08);
  padding: 12px;
  display: flex;
  flex-direction: column;
}

.title-header {
  font-size: 16px;
  font-weight: bold;
  margin: 0 0 12px 0;
  padding-bottom: 8px;
  border-bottom: 1px solid #eee;
  color: #333;
  text-align: left;
}

.daily-measures {
  flex: 1;
  overflow-y: hidden;
  padding-right: 4px;
  display: flex;
  flex-direction: column;
}

.selected-day-info,
.today-measures,
.no-date-measures {
  height: 100%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.selected-date {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  margin-bottom: 12px;
  padding-left: 10px;
}

.date-label {
  font-size: 16px;
  font-weight: 500;
  margin-right: 8px;
}

.lunar-date {
  font-size: 13px;
  color: #999;
}

.event-card {
  background-color: #f9f9f9;
  border-radius: 6px;
  margin-top: 5px;
  overflow: hidden;
  border-left: 3px solid #ccc;
  height: 770px;
  display: flex;
  flex-direction: column;
}

.event-header {
  padding: 8px 10px;
  background-color: #f0f2f5;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding-left: 20px;
}

.event-type {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  margin-right: 8px;
}

.event-type.prevention {
  background-color: rgba(76, 175, 80, 0.1);
  color: #4CAF50;
}

.event-type.outbreak {
  background-color: rgba(33, 150, 243, 0.1);
  color: #2196F3;
}

.event-type.critical {
  background-color: rgba(255, 152, 0, 0.1);
  color: #FF9800;
}

.event-title {
  font-weight: 500;
  font-size: 13px;
}

.event-body {
  padding: 15px 20px;
  height: calc(100% - 36px);
  overflow-y: hidden;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.event-desc {
  font-size: 13px;
  color: #000;
  margin: 0;
  line-height: 2.2;
  width: 100%;
}

.no-events {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 770px;
  color: #999;
  font-size: 15px;
  background-color: #f9f9f9;
  border-radius: 6px;
  margin-top: 5px;
  border-left: 3px solid #ccc;
}

.no-events p {
  margin: 0;
  padding: 0;
  text-align: center;
}

/* 结构化内容样式调整 */
.structured-content {
  height: 100%;
  overflow-y: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: 100%;
}

.content-section {
  margin-bottom: 25px;
}

.content-section h4 {
  font-size: 15px;
  color: #333;
  margin: 0 0 15px 0;
  padding-bottom: 8px;
  border-bottom: 1px dashed #eee;
  text-align: left;
}

.content-section li {
  margin-bottom: 15px !important;
  padding: 5px 0 !important;
  font-size: 13px;
  line-height: 2;
  color: #666;
}

.simple-description {
  font-size: 13px;
  line-height: 2;
  color: #111;
  text-align: left;
}

/* 添加样式：关键点的样式 */
.key-points {
  font-size: 13px;
  line-height: 1.8;
  color: #000;
  width: 100%;
}

.key-points p {
  margin: 0 0 12px 0;
  padding: 0;
  text-align: left;
}
</style> 